Using joint decoding engine in a wireless device

ABSTRACT

A method for using a joint decoding engine in a wireless device is disclosed. A first symbol stream and a second symbol stream in a received multiple input multiple output (MIMO) signal is determined. A scaled channel estimate for a wireless transmission channel and a scaled noise covariance of the MIMO signal are also determined. The scaled channel estimate and the first symbol stream are whitened. Max log maximum a posteriori (MLM) processing is performed on the whitened first symbol stream to produce a first data stream. The first data stream may be de-rate matched and decoded to produce a decoded first data stream.

TECHNICAL FIELD

The present disclosure relates generally to communication systems. Morespecifically, the present disclosure relates to using a joint decodingengine in a wireless device.

BACKGROUND

Wireless communication systems have become an important means by whichmany people worldwide have come to communicate. A wireless communicationsystem may provide communication for a number of wireless communicationdevices, each of which may be serviced by a base station. A wirelesscommunication device may be capable of using multiple protocols andoperating at multiple frequencies to communicate in multiple wirelesscommunication systems.

As wireless communication becomes more popular, different signalprocessing techniques may be used to increase the quality and efficiencyof wireless communication devices. However, the techniques themselvesmay present new challenges, such as adding computational complexitywithin a wireless communication device. These techniques may beoptimizations for required, existing processes or new processes. Oneprocess within modern devices that may consume device resources isdecoding a wireless signal. Therefore, benefits may be realized byimproved systems and methods for using a joint decoding engine in awireless device.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating a wireless communication systemwith a wireless communication device that uses a joint decoding engine;

FIG. 2 is a block diagram illustrating a joint decoding engine in a MIMOdata path;

FIG. 3 is a block diagram illustrating scaling calculations for a jointdecoding engine;

FIG. 4 is a block diagram illustrating a wireless communication devicethat uses a joint decoding engine;

FIG. 5 is a flow diagram illustrating a method for using a jointdecoding engine;

FIG. 6 illustrates means-plus-function blocks corresponding to themethod of FIG. 5;

FIG. 7 is a flow diagram illustrating a method for max log maximum aposteriori (MLM) processing;

FIG. 8 illustrates means-plus-function blocks corresponding to themethod of FIG. 7; and

FIG. 9 illustrates certain components that may be included within awireless device.

DETAILED DESCRIPTION

A method for using a joint decoding engine in a wireless device isdisclosed. A first symbol stream and a second symbol stream in areceived multiple input multiple output (MIMO) signal is determined. Ascaled channel estimate for a wireless transmission channel and a scalednoise covariance of the MIMO signal are also determined. The scaledchannel estimate and the first symbol stream are whitened. Max logmaximum a posteriori (MLM) processing is performed on the whitened firstsymbol stream to produce a first data stream. The first data stream maybe de-rate matched and decoded to produce a decoded first data stream.

In one configuration, hard successive interference cancellation (SIC) orsoft SIC may be performed on the second symbol stream if SIC is enabled.The second symbol stream may be whitened, have MLM processing performed,be de-rate matched, and turbo decoded to produce a decoded second datastream. SIC may include encoding the decoded first data stream toreproduce the first data stream and using the first data stream to zeroout one column of the scaled channel estimate.

Furthermore, scaling factors for a channel estimate and a noisecovariance in the received MIMO signal may be determined based onamplitude and energy of the first symbol stream and the second symbolstream. The channel estimate and the noise covariance may be scaledusing the scaling factors to produce the scaled channel estimate and thescaled noise covariance. The determining of the first symbol stream andthe second symbol stream from the received MIMO signal may includedispreading or descrambling the received MIMO signal to produce thefirst symbol stream and the second symbol stream. The whitening mayinclude determining a whitening matrix based on the scaled noisecovariance of the MIMO signal and whitening the scaled channel estimateand the first symbol stream using the whitening matrix.

In one configuration, MLM processing includes performing the followingactions if bit b_(k) is in s₁, where s₁ is a symbol in the first symbolstream. Possible s₁ values may be determined as constellation pointssuch that b_(k)=1. For each possible s₁ value, a minimum mean squareerror (MMSE) estimate of a corresponding s₂ may be determined, where s₂is a symbol in the second symbol stream and determining possible s₂values as the MMSE estimates of s₂ sliced to a nearest constellationpoint. The value d₁=∥y−h₁s₁−h₂s₂∥ may be estimated using an L2 norm maxsum approximation for each (s₁, s₂) pair, where y is the receivedmultiple input multiple output (MIMO) signal, h₁ is a first column inthe scaled channel estimate, and h₂ is a second column in the scaledchannel estimate. A minimum d₁ value, min(d₁), may be determined.Possible s₁ values may be determined as constellation points such thatb_(k)=0. For each possible s₁ value, an MMSE estimate of a correspondings₂ may be obtained and possible s₂ values may be determined as the MMSEestimates of s₂ sliced to a nearest constellation point. The valued₀=∥y−h₁s₁−h₂s₂∥ may be estimated using an L2 norm max sum approximationfor each (s₁, s₂) pair. A minimum do value, min(d₀) may be determined.The log likelihood ratio (LLR) of b_(k), L(b_(k)), asL(b_(k))=(min(d₁))²−(min(d₀))² may be determined.

However, if bit b_(k) is in s₂, the following actions may be performed.Possible s₂ values may be determined as constellation points such thatb_(k)=1. For each possible s₂ value, a minimum mean square error (MMSE)estimate of a corresponding s₁ may be obtained and possible s₁ valuesmay be determined as the MMSE estimates of s₁ sliced to a nearestconstellation point. The value d₁=∥y−h₁s₁−h₂s₂∥ may be estimated usingan L2 norm max sum approximation for each (s₁, s₂) pair. A minimum d₁value, min(d₁), may be determined. Possible s₂ values may be determinedas constellation points such that b_(k)=0. For each possible s₂ value,an MMSE estimate of a corresponding s₁ may be obtained and possible s₁values may be determined as the MMSE estimates of s₁ sliced to a nearestconstellation point. The value d₀=∥y−h₁s₁−h₂s₂∥ may be estimated usingan L2 norm max sum approximation for each (s₁, s₂) pair. A minimum d₀value, min(d₀), may be determined. The log likelihood ratio (LLR) ofb_(k), L(b_(k)), as L(b_(k))=(min(d₁))²−(min(d₀))² may be determined.

The estimating of d₁ and d₀ using the L2 norm max sum approximation mayinclude defining

$z = {\begin{bmatrix}z_{1} \\z_{2} \\z_{3} \\z_{4}\end{bmatrix} = \begin{bmatrix}{{real}\left( s_{1} \right)} \\{{imag}\left( s_{1} \right)} \\{{real}\left( s_{2} \right)} \\{{imag}\left( s_{2} \right)}\end{bmatrix}}$

and determining d as

$d = {{\max\limits_{i}{z_{i}}} + {0.25\left( {\sum\limits_{j \neq i}{z_{j}}} \right)}}$

where i and j are incrementing indices. The wireless device may operateusing High Speed Downlink Packet Access (HSDPA).

An apparatus that uses a joint decoding engine is also disclosed. Theapparatus includes a processor and memory in electronic communicationwith the processor. Executable instructions are stored in the memory.The instructions are executable to determine a first symbol stream and asecond symbol stream in a received multiple input multiple output (MIMO)signal, a scaled channel estimate for a wireless transmission channel,and a scaled noise covariance of the MIMO signal. The instructions arealso executable to whiten the scaled channel estimate and the firstsymbol stream. The instructions are also executable to perform max logmaximum a posteriori (MLM) processing on the whitened first symbolstream to produce a first data stream. The instructions are alsoexecutable to de-rate match and turbo decode the first data stream toproduce a decoded first data stream.

A wireless device that uses a joint decoding engine is also disclosed.The wireless device includes means for determining a first symbol streamand a second symbol stream in a received multiple input multiple output(MIMO) signal, a scaled channel estimate for a wireless transmissionchannel, and a scaled noise covariance of the MIMO signal. The wirelessdevice also includes means for whitening the scaled channel estimate andthe first symbol stream. The wireless device also includes means forperforming max log maximum a posteriori (MLM) processing on the whitenedfirst symbol stream to produce a first data stream. The wireless devicealso includes means for de-rate matching and turbo decoding the firstdata stream to produce a decoded first data stream.

A computer-program product for using a joint decoding engine is alsodisclosed. The computer-program product includes a computer-readablemedium having instructions thereon. The instructions include code fordetermining a first symbol stream and a second symbol stream in areceived multiple input multiple output (MIMO) signal, a scaled channelestimate for a wireless transmission channel, and a scaled noisecovariance of the MIMO signal. The instructions also include code forwhitening the scaled channel estimate and the first symbol stream. Theinstructions also include code for performing max log maximum aposteriori (MLM) processing on the whitened first symbol stream toproduce a first data stream. The instructions also include code forde-rate matching and turbo decoding the first data stream to produce adecoded first data stream.

FIG. 1 is a block diagram illustrating a wireless communication system100 that uses a joint decoding engine 120. The wireless communicationdevice 102 may communicate with a base station 104. Examples of awireless communication device 102 include cellular phones, personaldigital assistants (PDAs), handheld devices, wireless modems, laptopcomputers, personal computers, etc. A wireless communication device 102may alternatively be referred to as an access terminal, a mobileterminal, a mobile station, a remote station, a user terminal, aterminal, a subscriber unit, a mobile device, a wireless device, asubscriber station, user equipment, or some other similar terminology.The base station 104 may alternatively be referred to as an accesspoint, a Node B, an evolved Node B, or some other similar terminology.

The base station 104 may communicate with a radio network controller 106(also referred to as a base station controller or packet controlfunction). The radio network controller 106 may communicate with amobile switching center (MSC) 110, a packet data serving node (PDSN) 108or internetworking function (IWF), a public switched telephone network(PSTN) 114 (typically a telephone company), and an Internet Protocol(IP) network 112 (typically the Internet). The mobile switching center110 may be responsible for managing the communication between thewireless communication device 102 and the public switched telephonenetwork 114, while the packet data serving node 108 may be responsiblefor routing packets between the wireless communication device 102 andthe IP network 112.

The wireless communication system may operate using High Speed DownlinkPacket Access (HSDPA). The wireless communication device 102 may includea joint decoding engine 120 a and the bases station 104 may include ajoint decoding engine 120 b. The joint decoding engines 120 may usejoint decoding instead of symbol equalization to decode a symbol stream.Joint decoding of a multiple input multiple output (MIMO) data streammay provide significant improvement over symbol equalization. There areseveral joint decoding methods. One method is the full joint loglikelihood ratio (JLLR) and another is max log maximum a posteriori(MAP), or MLM. The joint decoding engine 120 may include both hard/softsuccessive interference cancellation (SIC) and non-SIC.

The max log MAP/joint log likelihood ratio (MLM/JLLR) core of the jointdecoding engines 120 may process raw received symbols that includeinter-channel interference (ICI) and inter-symbol interference (ISI).The inter-channel interference (ICI) may be measured in the noisecovariance and the inter-symbol interference (ISI) may be measured bycalculating a channel matrix. Furthermore, the noise covariance andchannel matrix, or the noise whitened equivalents, may be fed into theMLM/JLLR core for processing. Thus, the present systems and methodsinclude channel matrix calculation, noise covariance, noise whitening ofdata, computation of LLRs, subsequent post-processing, e.g., turbodecoding or hard/soft successive interference cancellation (SIC).

FIG. 2 is a block diagram illustrating a joint decoding engine 220 in aMIMO data path 221. The MIMO data path 221 may be in a wirelesscommunication device 102 or a base station 104. The illustrated MIMOdata path 221 may include firmware 222 and hardware 224, although anycombination of software and hardware may be used to implement thedescribed functions. For example, the illustrated hardware 224 portionof the MIMO data path 221 may be in the demodulator of a wirelesscommunication device 102.

A chip level MIMO signal may be received by a despreader/descrambler 228that converts the chip level MIMO signal into a first MIMO symbol stream230 a and a second MIMO symbol stream 230 b. A write-controller buffer229 may store the MIMO symbol streams 230. A received symbol (y) in thewrite-controller buffer 229 may be described according to Equation (1):

$\begin{matrix}{y = {{{Hs} + n} = {{\begin{bmatrix}h_{11} & h_{12} \\h_{21} & h_{22}\end{bmatrix}\begin{bmatrix}s_{1} \\s_{2}\end{bmatrix}} + \begin{bmatrix}n_{1} \\n_{2}\end{bmatrix}}}} & (1)\end{matrix}$

where y is the received symbol, H is a channel estimate,

$s = \begin{bmatrix}s_{2} \\s_{2}\end{bmatrix}$

are two streams of the transmitted symbol, and n is the noise on thereceived signal. The two streams of the transmitted symbol, s₁ and s₂,may use different modulation techniques, e.g., Quadrature Phase ShiftKeying (QPSK), 16 Quadrature Amplitude Modulation (16QAM), 64 QuadratureAmplitude Modulation (64QAM), etc.

The MIMO symbol streams 230 may be used by an intermediate covariancecalculator 231 to determine an intermediate covariance (Ryy) 232 thatmay be used as input to a linear minimum mean square error (LMMSE)weight calculator 233. The LMMSE weight calculator 233 may output anMMSE weight 234. A linear minimum mean square error (LMMSE) equalizer235 may apply the MMSE weight 234 to the data streams to output twoequalized symbol streams 236. Furthermore, equalized symbol streams 236and an amplitude (μ) 240 and energy (ν) 241, may be used by a max logMAP (MLM) scaling calculator 242 to determine scaling parameters for achannel estimate and a noise covariance. The amplitude (μ) 240 andenergy (ν) 241 may be calculated by the amplitude and energy calculator239. The scaled noise covariance may be used to determine a whiteningmatrix (W) 252.

In HSDPA, the carrier-to-interference ratio (CIR) matrix (H) and noisecovariance matrix (R_(nn)) may be estimated via the Common Pilot Channel(CPICH) that may have an unknown power offset to the High Speed-PhysicalDownlink Shared Channel (HS-PDSCH). Taking into account this unknownscaling, the MIMO symbol stream 230 may be described according toEquation (2):

$\begin{matrix}{y = {{\alpha \; {Hs}} + {\sqrt{\beta}R_{nn}^{1/2}n}}} & (2)\end{matrix}$

where α and β are unknown scaling parameters that are calculated in themax log MAP (MLM) scaling calculator 242.

One possible approach to decoding multiple MIMO symbol streams 230 maybe to use a symbol equalizer followed by log likelihood ratio (LLR)approximation. In contrast, the joint decoding engines 220 a-c may usenoise whitening, max log MAP (MLM) processing, and turbo decoding.Therefore a joint decoding engine 220 a may include a noise whitener 246a, a max log MAP (MLM) module 248 a, and a de-rate matching turbodecoder 250 a. The joint decoding engine 220 a may receive a scaledchannel estimate (αH) 244, a whitening matrix (W) 252, and the MIMOsymbol streams 230 and produce a decoded first data stream 256 asoutput. The whitening matrix (W) 252 may be calculated in the firmware222 according to equation (3):

W=(βR _(nn))^(−1/2)  (3)

The noise whitener 246 a may whiten the received symbol according toEquation (4):

Y _(w) =W*y  (4)

where Y_(w) is the whitened received symbol. The noise whitener 246 amay also whiten the scaled channel estimate 244 according to Equation(5):

H _(w) =W*(αH)  (5)

where H_(w) is the whitened channel estimate.

Therefore, the output of the noise whitener 246 a may be a whitenedchannel estimate (H_(w)) and the whitened received symbols (Y_(w)). Themax log MAP (MLM) module 248 a may then perform max log MAP (MLM)processing to produce a first data stream. Even though the max log MAP(MLM) module 248 a may be capable of producing the first data streambased on the first MIMO symbol stream 230 a and a second data streambased on the second MIMO symbol stream 230 b, the max log MAP (MLM)module 248 a may produce only the first data stream because the jointdecoding engines 220 may include only one de-rate matching turbo decoder250 a. The de-rate matching turbo decoder 250 a may then de-rate matchand decode the first data stream to produce a decoded first data stream256. De-rate matching may be performed to undo the rate matchingperformed at the time of encoding. In other words, rate matching at atransmitter may change the code rate in a data stream bypuncturing/removing or expanding/repeating bits in the data streambefore transmitting. Conversely, the de-rate matching may de-puncture,or replace, some of the bits in the data stream before turbo decoding.This allows the turbo decoder to receive a data stream at the expecteddata rate. Therefore, a first joint decoding engine 220 a may produce adecoded first data stream 256. A successive interference cancellation(SIC) determination module 264 may determine if a hard-SIC feature or asoft-SIC feature is enabled in the MIMO data path 221 and if the decodedfirst data stream 256 passes a cyclic redundancy check (CRC).

There may be three configurations for producing the decoded secondstream 258. In a first configuration, when a hard-SIC feature is enabledand the decoded first data stream 256 passes the CRC, a successiveinterference cancellation module 260 may use hard-SIC to decode thesecond data stream. In a second configuration, if a soft-SIC feature isenabled, whether or not the decoded first data stream 256 passes theCRC, the successive interference cancellation module 260 may usesoft-SIC to decode the second data stream. In a third configuration, ifthe hard-SIC feature is enabled but the decoded first data stream 256fails the CRC, the second data stream may be decoded the same way as thefirst data stream.

If hard-SIC is enabled and the CRC is successful, or if soft-SIC isenabled, a successive interference cancellation (SIC) module 260 mayreceive the decoded first data stream 256 as input and produce thedecoded second data stream 258 a using SIC. If hard-SIC is used, thedecoded second data stream 258 a may include hard values. However, ifsoft-SIC is used, the decoded second data stream 258 a may include softvalues, i.e., values that indicate reliability of the data. SIC may beconducted to subtract a re-encoded version of the decoded first datastream 256 from the second MIMO symbol stream 230 b. If SIC is used, thesignal model, from Equation (1), may be written as shown in Equation(6):

y=h ₁ s ₁ +h ₂ s ₂ +n  (6)

where h₁ is the first column of the scaled channel estimate (αH) 244 andh₂ is the second column of the scaled channel estimate (αH) 244. Thesuccessive interference cancellation module 260 may cancel the decodedfirst data stream 256, s₁, from the signal, assuming the decoded firstdata stream 256, s₁, has been decoded first and cancelled out. In otherwords, the successive interference cancellation module 260 may isolatethe second data stream, as shown in Equation (7), before decoding thesecond stream.

y ₂ =h ₂ s ₂ +n  (7)

Therefore, the input to the joint decoding engine 220 b used for SIC maybe according to Equation (8):

$\begin{matrix}{y_{2} = {{\begin{bmatrix}0 & h_{12} \\0 & h_{22}\end{bmatrix}\begin{bmatrix}s_{1} \\s_{2}\end{bmatrix}} + \begin{bmatrix}n_{1} \\n_{2}\end{bmatrix}}} & (8)\end{matrix}$

In other words, an encoder 262 may re-encode the decoded first datastream 256 so that one column of the scaled channel estimate (αH) 244may be zeroed out. The partially zeroed out scaled channel estimate (αH)244 may be fed into the joint decoding engine 220 b and processed by anoise whitener 246 b, a max log MAP (MLM) module 248 b, and a de-ratematching turbo decoder 250 b to produce the decoded second data stream258 a.

If however, either SIC (hard or soft) is not enabled or the CRC is notsuccessful, a third joint decoding engine 220 c may produce a decodedsecond data stream 258 b using a noise whitener 246 c, a max log MAP(MLM) module 248 c, and a de-rate matching turbo decoder 250 c asdescribed above. The third joint decoding engine 220 c, like the firstjoint decoding engine 220 a, may receive the scaled channel estimate(αH) 244 and the whitening matrix (W) 252, e.g., from the firmware 222.

FIG. 3 is a block diagram illustrating scaling calculations for a jointdecoding engine 320. As before, a MIMO data path 321 may be in awireless communication device 102 or a base station 104. The illustratedMIMO data path 321 may include firmware 322 and hardware 324 a-b,although any combination of software and hardware may be used toimplement the described functions. For example, the illustrated hardware324 portion of the MIMO data path 321 may be in the demodulator of awireless communication device 102.

A write-controller buffer 329 may store one or more MIMO symbol streams330. A linear minimum mean square error (LMMSE) equalizer 335 maygenerate two equalized symbol streams (E) 336 as shown in Equation (9):

$\begin{matrix}{E = {f_{scale}\left( {H*R_{yy}^{- 1}} \right)}} & (9)\end{matrix}$

where R_(yy) 332 is the intermediate covariance received from the LMMSEweight calculator 233, e_(i) is the ith row of matrix E, andf_(scale)(•) is a scaling function that is used to control the bitwidthof the symbols. Note that in order to fit write-controller buffer 329bitwidth of each stream, the scaling factor for the two streams may bedifferent. The two separated streams may be expressed as shown inEquation (10):

$\begin{matrix}{r = {{Ey} = {{\alpha \; {EHs}} + {\sqrt{\beta}{ER}_{nn}^{1/2}n}}}} & (10)\end{matrix}$

where H and R_(nn) are unsealed. In the following description, A=EH and

B = ER_(nn)^(1/2).

Therefore, the streams may be expressed as shown in Equation (11):

$\begin{matrix}{\begin{bmatrix}r_{1} \\r_{2}\end{bmatrix} = {\begin{bmatrix}{\alpha \; A_{1,1}s_{1}} \\{\alpha \; A_{2,2}s_{2}}\end{bmatrix} + \begin{bmatrix}{{\alpha \; A_{1,2}s_{2}} + {\sqrt{\beta}\left( {{B_{1,1}n_{1}} + {B_{1,2}n_{2}}} \right)}} \\{{\alpha \; A_{2,1}s_{1}} + {\sqrt{\beta}\left( {{B_{2,1}n_{1}} + {B_{2,2}n_{2}}} \right)}}\end{bmatrix}}} & (11)\end{matrix}$

Following the LMMSE equalizer 335, the amplitude and energy calculator339 may estimate the symbol amplitude (μ) 340 and energy (ν) 341. Thereceived two MIMO symbol streams 330 may be expressed as shown inEquation (12):

$\begin{matrix}{\begin{bmatrix}r_{1} \\r_{2}\end{bmatrix}_{real} = {\begin{bmatrix}{\mu_{1}s_{1}} \\{\mu_{2}s_{2}}\end{bmatrix}_{real} + \begin{bmatrix}{\sigma_{1}v_{1}} \\{\sigma_{2}v_{2}}\end{bmatrix}_{real}}} & (12)\end{matrix}$

Comparing Equation (12) and Equation (11), the signal portion may beexpressed as shown in Equation (13):

$\begin{matrix}{\begin{bmatrix}A_{1,1} \\A_{2,2}\end{bmatrix} = \begin{bmatrix}\mu_{1} \\\mu_{2}\end{bmatrix}} & (13)\end{matrix}$

Thus, the least squares solution to the problem are expressed inEquation (14):

$\begin{matrix}{\alpha = {{\begin{bmatrix}A_{1,1} \\A_{2,2}\end{bmatrix}^{+}\begin{bmatrix}\mu_{1} \\\mu_{2\;}\end{bmatrix}} = {{\frac{1}{\left( {A_{1,1}^{2} + A_{2,2}^{2}} \right)}\begin{bmatrix}A_{1,1} & A_{2,2}\end{bmatrix}}\begin{bmatrix}\mu_{1} \\\mu_{2}\end{bmatrix}}}} & (14)\end{matrix}$

where [•]⁺ denotes the Moore-Penrose pseudo-inverse of the matrix.Similarly, the noise portion may be expressed according to Equation(15):

$\begin{matrix}{{\begin{bmatrix}{\alpha^{2}{A_{1,2}}^{2}E\left\{ {{Re}\left( s_{2} \right)}^{2} \right\}} \\{\alpha^{2}{A_{2,1}}^{2}E\left\{ {{Re}\left( {s\; 1} \right)} \right\}^{2}}\end{bmatrix} + {\begin{bmatrix}{{B_{1,1}}^{2} + {B_{1,2}}^{2}} \\{{B_{2,1}}^{2} + {B_{2,2}}^{2}}\end{bmatrix}\beta}} = \begin{bmatrix}{2\; \sigma_{1}^{2}} \\{2\sigma_{2}^{2}}\end{bmatrix}} & (15)\end{matrix}$

where E{•} indicates the expected value. Therefore, β may be calculatedas shown in Equation (16):

$\begin{matrix}{\beta = {\begin{bmatrix}{{B_{1,1}}^{2} + {B_{1,2}}^{2\;}} \\{{B_{2,1}}^{2} + {B_{2,2}}^{2}}\end{bmatrix}^{+}\begin{bmatrix}{{2\sigma_{1}^{2}} - {\alpha^{2}{A_{1,2}}^{2}E\left\{ {{Re}\left( s_{2} \right)}^{2} \right\}}} \\{{2\sigma_{2}^{2}} - {\alpha^{2}{A_{2,1}}^{2}E\left\{ {{Re}\left( {s\; 1} \right)}^{2} \right\}}}\end{bmatrix}}} & (16)\end{matrix}$

Alternatively, β may be close to a fixed number, depending on thef_(scale)(•) algorithm (since the Common Pilot Channel (CPICH) and theHigh Speed-Physical Downlink Shared Channel (HS-PDSCH) may experiencethe same noise, the only difference may be the spreading gain of the twochannels). In this case, β may not be calculated. However, α may alwaysbe calculated.

The max log MAP (MLM) scaling calculator 342 may then produce a scaledchannel estimate (αH) 344 and a scaled noise covariance (βR_(nn)) 364using the calculated α and β, respectively. An inverter 366 may thencalculate a whitening matrix (W) 352 using the scaled noise covariance(βR_(nn)) 364 according to Equation (17):

W=(βR _(nn))^(−1/2)  (17)

A joint decoding engine 320 may receive the scaled channel estimate (αH)344, the whitening matrix (W) 352 and the MIMO symbol streams 330 asinput. A noise whitener 346 may include a channel whitener 368 a and asymbol whitener 370. The channel whitener 368 a may use the whiteningmatrix (W) 352 to whiten the scaled channel estimate (αH) 344 andproduce a whitened channel estimate (H_(w)) 372 a. Similarly, the symbolwhitener 370 may whiten the MIMO symbol streams 330 using the whiteningmatrix (W) 352 to produce whitened received symbols (Y_(w)) 374. The maxlog MAP (MLM) module 348 may receive H_(w) 372 a and Y_(w) 374 as inputsand produce a first data stream 376 using max log MAP (MLM) processingdiscussed below. The max log MAP (MLM) module 348 may also use a fixedpoint scalar (β″ here means we may need to calculate two possibledifferent β″ for two streams) 378 that is calculated from a turbodecoder scaling calculator 382. The turbo decoder scaling calculator 382may receive a whitened channel estimate (H_(w)) 372 b from a channelwhitener 368 b. The max log MAP (MLM) module 348 may also receive themodulation types 380 for the symbol streams, (e.g., QPSK, 16QAM, 64QAM),because different streams may have been modulated using differenttechniques. The first data stream 376 may then be de-rate matched andturbo decoded by the de-rate matching turbo decoder 350 to produce thedecoded first stream data 356.

FIG. 4 is a block diagram illustrating a wireless device 401 that uses ajoint decoding engine 420. The wireless device 401 may be a wirelesscommunication device 102 or a base station 104. A despreader/descrambler428 may receive a chip level MIMO signal and produce a first MIMO symbolstream 430 a and a second MIMO symbol stream 430 b. The MIMO symbolstreams 430 may be stored in a write-controller buffer 429.

The wireless device 401 may also include a storage medium 482 to storevarious parameters used in the joint decoding process. A channelestimate (H) 484 and a noise covariance (Rnn) 486 may be estimated fromthe Common Pilot Channel (CPICH). However, since the CPICH may have anunknown power offset to the High Speed-Physical Downlink Shared Channel(HS-PDSCH), a channel estimate scalar (α) 488 and a noise covariancescalar (β) 490 may be calculated by a max log MAP (MLM) scalingcalculator 442 according to Equations (9)-(16). An intermediatecovariance calculator 431 may calculate an intermediate covariance (Ryy)432 that may be used to determine α 488 and β 490. This may includecalculating two equalized streams (E) 436, and an amplitude (μ) 440 andan energy (ν) 441 for received symbols. A linear minimum mean squareerror weight calculator 433 may also be used to determine α 488 and β490.

A joint decoding engine 420 may receive a scaled channel estimate (αH)444, a whitening matrix (W) 452, and a MIMO symbol stream 430 as input.A channel whitener 468 in a noise whitener 446 may whiten the scaledchannel estimate (αH) 444 according to Equation (5) to produce awhitened channel estimate (H_(w)) 472. Similarly, a symbol whitener 470may whiten the MIMO symbol stream 430 according to Equation (4) toproduce whitened received symbols (Y_(w)) 474.

A max log MAP (MLM) module 448 may receive the whitened channel estimate(H_(w)) 472 and the whitened received symbols (Y_(w)) 474 and produce afirst data stream. The max log MAP (MLM) module 448 may also receive afixed point scalar 478 (β″ that may indicate two β″ for two streams) toaccount for the fixed point effect. The max log MAP (MLM) module 448 mayalso receive modulation types 480 of the MIMO symbol streams 430. Ade-rate matching turbo decoder 450 may perform de-rate matching andturbo decoding on the first data stream output from the max log MAP(MLM) module 448 to produce a decoded first data stream 256.

FIG. 5 is a flow diagram illustrating a method 500 for using a jointdecoding engine 320. The method 500 may be performed in a wirelesscommunication device 102 or a base station 104. The wirelesscommunication device 102 may receive 502 a MIMO signal over a wirelesstransmission channel. The MIMO signal may be received at the chip leveland converted to symbols by a despreader/descrambler. The wirelesscommunication device 102 may also determine 504 a first MIMO symbolstream 230 a and a second MIMO symbol stream 230 b in the MIMO signal, achannel estimate (H) for the wireless transmission channel, and a noisecovariance (R_(nn)) of the MIMO signal. The channel estimate (H) may beintended as an estimate of the High Speed-Physical Downlink SharedChannel (HS-PDSCH). Therefore, the channel estimate (H) may beequivalent to a scaled estimate of the Common Pilot Channel (CPICH),i.e., (αH) 244. The wireless communication device 102 may whiten 506 thechannel estimate (H) and the first MIMO symbol stream 230 a. This mayinclude using a whitening matrix (W) 252 derived from the noisecovariance (R_(nn)). Like the channel estimate (H), the noise covariance(R_(nn)) may be equivalent to a scaled noise covariance (βR_(nn)) 364 ofthe Common Pilot Channel (CPICH).

The wireless communication device 102 may perform 508 max log MAP (MLM)processing on the whitened first MIMO symbol stream. This may includedetermining log likelihood ratios (LLRs) for bits in the whitened firstMIMO symbol stream to produce a first data stream as discussed below.The wireless communication device 102 may also de-rate match 510 andturbo decode the first data stream. De-rate matching may includede-puncturing/replacing or expanding/repeating some of the bits in thedata stream before turbo decoding, i.e., replacing bits that werepunctured, or removed, at the transmitter. This allows a turbo decoderto receive a data stream at an expected data rate. The wirelesscommunication device 102 may also perform 512 successive interferencecancellation (SIC) on the second MIMO symbol stream if SIC is enabled.Successive interference cancellation (SIC) may be enabled using anysuitable method, e.g., embedding one or more bits in the transmitteddata, setting a bit on the device, etc. The wireless communicationdevice 102 may also whiten, perform max log MAP (MLM) processing,de-rate matching, and turbo decoding 514 on the second MIMO symbolstream 230 b.

The method 500 of FIG. 5 described above may be performed by varioushardware and/or software component(s) and/or module(s) corresponding tothe means-plus-function blocks 600 illustrated in FIG. 6. In otherwords, blocks 502 through 514 illustrated in FIG. 5 correspond tomeans-plus-function blocks 602 through 614 illustrated in FIG. 6.

FIG. 7 is a flow diagram illustrating a method 700 for max log maximum aposteriori (MLM) processing. The method 700 may be performed by a maxlog MAP (MLM) module 250 in a wireless communication device 102 or abase station 104. Using a MAP algorithm, the LLR of bit b_(k) may begiven by Equation (18):

$\begin{matrix}{{L\left( b_{k}\; \right)} = {{\log \left( \frac{\Pr \left\{ {b_{k} = \left. 0 \middle| y \right.} \right\}}{\Pr \left\{ {b_{k} = \left. 1 \middle| y \right.} \right\}} \right)} = {\log\left( \frac{\sum\limits_{{s:b_{k}} = 0}{\Pr \left\{ y \middle| s \right\} \Pr \left\{ s \right\}}}{\sum\limits_{{s:b_{k}} = 1}{\Pr \left\{ y \middle| s \right\} \Pr \left\{ s \right\}}} \right)}}} & (18)\end{matrix}$

Using a maximum likelihood (ML) algorithm, the LLR of bit b_(k) may begiven by Equation (19):

$\begin{matrix}{{L\left( b_{k} \right)} = {\log\left( \frac{\sum\limits_{{s:b_{k}} = 0}{\Pr \left\{ y \middle| s \right\}}}{\sum\limits_{{s:b_{k}} = 1}{\Pr \left\{ y \middle| s \right\}}} \right)}} & (19)\end{matrix}$

And, using a max log MAP (MLM) algorithm, the LLR of bit b_(k) may beapproximated by Equation (20):

$\begin{matrix}{{L\left( b_{k} \right)} \approx {\log \left( \frac{\max_{{s:\mspace{14mu} b_{k}} = 0}{\Pr \left\{ y \middle| s \right\}}}{\max_{{s:\mspace{14mu} b_{k}} = 1}{\Pr \left\{ y \middle| s \right\}}} \right)}} & (20)\end{matrix}$

Equation (20) may further be simplified with Equation (21):

$\begin{matrix}{{L\left( b_{k} \right)} = {\underset{{s:\mspace{14mu} b_{k}} = 1}{\min \; {d^{2}(s)}} - \underset{{s:\mspace{14mu} b_{k}} = 0}{\min \; {d^{2}(s)}}}} & (21)\end{matrix}$

where d(s)=1/σ∥y−Hs∥=∥y−Hs∥=∥y−h₁s₁−h₂s₂∥. Furthermore, σ is the noisecovariance, similar to Equations (12) and (15). However, after noisewhitening, noise may have unit variance, meaning σ after noise whiteningbecomes 1 (so the 1/σ term may be removed). Therefore, max log MAP (MLM)processing may include solving Equation (21).

To solve Equation (21), assuming b_(k)εs₁, the MLM module 250 maydetermine 716 all s₁ points in a constellation diagram such thatb_(k)=1. The MLM module 250 may also obtain 718 a minimum mean squareerror (MMSE) estimate of an s₂ point that corresponds to each s₁ point.The MLM module 250 may also slice 720 each s₂ point to a closestconstellation point as the new s₂ point. In other words, for each s1,the MMSE and slicing indicates how to directly get s2, withoutsearching, i.e., for each s1, we will get a corresponding s2 by MMSE andslicing. The MLM module 250 may also calculate 722 d1 for each (s₁, s₂)pair using the L2 norm max sum approximation as shown in Equation (22):

$\begin{matrix}{d = {{\max\limits_{i}{z_{i}}} + {0.25\left( {\sum\limits_{j \neq i}{z_{j}}} \right)}}} & (22)\end{matrix}$

where i and j are indices and z is defined according to Equation (23)for

$\begin{matrix}{z = {\begin{bmatrix}z_{1} \\z_{2} \\z_{3} \\z_{4}\end{bmatrix} = \begin{bmatrix}{{real}\left( s_{1} \right)} \\{{imag}\left( s_{1} \right)} \\{{real}\left( s_{2} \right)} \\{{imag}\left( s_{2} \right)}\end{bmatrix}}} & (23)\end{matrix}$

The MLM module 250 may determine 724 all s₁ points in the constellationdiagram such that b_(k)=0. The MLM module 250 may also obtain 726 aminimum mean square error (MMSE) estimate of an s₂ point thatcorresponds to each s₁ point. The MLM module 250 may also slice 728 eachs₂ point to a closest constellation point as the new s₂ point. The MLMmodule 250 may also calculate 730 d0 for each (s₁, s₂) pair using the L2norm approximation as shown in Equation (22) where i and j are indicesand z is defined according to Equation (23) for

$s = {\begin{bmatrix}s_{1} \\s_{2}\end{bmatrix}.}$

The MLM module 250 may then determine 732 a minimum d0 and a minimum d1.The MLM module 250 may then compute 734 Equation (24):

L(b _(k))=(min d1)²−(min d0)²  (24)

Basically, using the norm approximation as shown in Equation (22) maycalculate ∥y−h₁s₁−h₂s₂∥ by max sum approximation instead of∥y−h₁s₁−h₂s₂∥². Thus, squaring is only performed at the final LLRcalculation stage, i.e., once for all possible constellations. Thisresults in a smaller dynamic range that uses less bit-width and memoryas well as lower computational complexity in metric calculation state,which may be performed faster.

For example, if s₁ uses 64QAM, then there are a total of 64 possibleconstellation points, where 32 of them will have b_(k)=1. So an MLMmodule 250 may try all possible 32 constellation hypothesis whereb_(k)=1. For each hypothesis of s₁, the MLM module 250 may obtain (byMMSE and slicing) a corresponding s₂. Then the MLM module 250 may get 32d̂2(s) terms, each corresponding to one (s₁, s₂) pair. Then the MLMmodule 250 may get min of 32 terms, which is the first term in Equation(21). A similar method may be used to get the second term in Equation(21), however, for the second term we will try the other 32 s₁constellations where b_(k)=0.

The method 700 of FIG. 7 described above may be performed by varioushardware and/or software component(s) and/or module(s) corresponding tothe means-plus-function blocks 800 illustrated in FIG. 8. In otherwords, blocks 716 through 734 illustrated in FIG. 7 correspond tomeans-plus-function blocks 816 through 834 illustrated in FIG. 8.

FIG. 9 illustrates certain components that may be included within awireless device 901. The wireless device 901 may be a wirelesscommunication device 102 or a base station 104.

The wireless device 901 includes a processor 903. The processor 903 maybe a general purpose single-chip or multi-chip microprocessor (e.g., anARM), a special purpose microprocessor (e.g., a digital signal processor(DSP)), a microcontroller, a programmable gate array, etc. The processor903 may be referred to as a central processing unit (CPU). Although justa single processor 903 is shown in the wireless device 901 of FIG. 9, inan alternative configuration, a combination of processors (e.g., an ARMand DSP) could be used.

The wireless device 901 also includes memory 905. The memory 905 may beany electronic component capable of storing electronic information. Thememory 905 may be embodied as random access memory (RAM), read onlymemory (ROM), magnetic disk storage media, optical storage media, flashmemory devices in RAM, on-board memory included with the processor,EPROM memory, EEPROM memory, registers, and so forth, includingcombinations thereof.

Data 907 and instructions 909 may be stored in the memory 905. Theinstructions 909 may be executable by the processor 903 to implement themethods disclosed herein. Executing the instructions 909 may involve theuse of the data 907 that is stored in the memory 905. When the processor903 executes the instructions 907, various portions of the instructions909 a may be loaded onto the processor 903, and various pieces of data907 a may be loaded onto the processor 903.

The wireless device 901 may also include a transmitter 911 and areceiver 913 to allow transmission and reception of signals between thewireless device 901 and a remote location. The transmitter 911 andreceiver 913 may be collectively referred to as a transceiver 915. Anantenna 917 may be electrically coupled to the transceiver 915. Thewireless device 901 may also include (not shown) multiple transmitters,multiple receivers, multiple transceivers and/or multiple antenna.

The various components of the wireless device 901 may be coupledtogether by one or more buses, which may include a power bus, a controlsignal bus, a status signal bus, a data bus, etc. For the sake ofclarity, the various buses are illustrated in FIG. 9 as a bus system919.

In the above description, reference numbers have sometimes been used inconnection with various terms. Where a term is used in connection with areference number, this is meant to refer to a specific element that isshown in one or more of the Figures. Where a term is used without areference number, this is meant to refer generally to the term withoutlimitation to any particular Figure.

The term “determining” encompasses a wide variety of actions and,therefore, “determining” can include calculating, computing, processing,deriving, investigating, looking up (e.g., looking up in a table, adatabase or another data structure), ascertaining and the like. Also,“determining” can include receiving (e.g., receiving information),accessing (e.g., accessing data in a memory) and the like. Also,“determining” can include resolving, selecting, choosing, establishingand the like.

The phrase “based on” does not mean “based only on,” unless expresslyspecified otherwise. In other words, the phrase “based on” describesboth “based only on” and “based at least on.”

The term “processor” should be interpreted broadly to encompass ageneral purpose processor, a central processing unit (CPU), amicroprocessor, a digital signal processor (DSP), a controller, amicrocontroller, a state machine, and so forth. Under somecircumstances, a “processor” may refer to an application specificintegrated circuit (ASIC), a programmable logic device (PLD), a fieldprogrammable gate array (FPGA), etc. The term “processor” may refer to acombination of processing devices, e.g., a combination of a DSP and amicroprocessor, a plurality of microprocessors, one or moremicroprocessors in conjunction with a DSP core, or any other suchconfiguration.

The term “memory” should be interpreted broadly to encompass anyelectronic component capable of storing electronic information. The termmemory may refer to various types of processor-readable media such asrandom access memory (RAM), read-only memory (ROM), non-volatile randomaccess memory (NVRAM), programmable read-only memory (PROM), erasableprogrammable read only memory (EPROM), electrically erasable PROM(EEPROM), flash memory, magnetic or optical data storage, registers,etc. Memory is said to be in electronic communication with a processorif the processor can read information from and/or write information tothe memory. Memory that is integral to a processor is in electroniccommunication with the processor.

The terms “instructions” and “code” should be interpreted broadly toinclude any type of computer-readable statement(s). For example, theterms “instructions” and “code” may refer to one or more programs,routines, sub-routines, functions, procedures, etc. “Instructions” and“code” may comprise a single computer-readable statement or manycomputer-readable statements.

The functions described herein may be stored as one or more instructionson a computer-readable medium. The term “computer-readable medium”refers to any available medium that can be accessed by a computer. Byway of example, and not limitation, a computer-readable medium maycomprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage,magnetic disk storage or other magnetic storage devices, or any othermedium that can be used to carry or store desired program code in theform of instructions or data structures and that can be accessed by acomputer. Disk and disc, as used herein, includes compact disc (CD),laser disc, optical disc, digital versatile disc (DVD), floppy disk andBlu-Ray® disc where disks usually reproduce data magnetically, whilediscs reproduce data optically with lasers.

Software or instructions may also be transmitted over a transmissionmedium. For example, if the software is transmitted from a website,server, or other remote source using a coaxial cable, fiber optic cable,twisted pair, digital subscriber line (DSL), or wireless technologiessuch as infrared, radio, and microwave, then the coaxial cable, fiberoptic cable, twisted pair, DSL, or wireless technologies such asinfrared, radio, and microwave are included in the definition oftransmission medium.

The methods disclosed herein comprise one or more steps or actions forachieving the described method. The method steps and/or actions may beinterchanged with one another without departing from the scope of theclaims. In other words, unless a specific order of steps or actions isrequired for proper operation of the method that is being described, theorder and/or use of specific steps and/or actions may be modifiedwithout departing from the scope of the claims.

Further, it should be appreciated that modules and/or other appropriatemeans for performing the methods and techniques described herein, suchas those illustrated by FIGS. 5 and 7, can be downloaded and/orotherwise obtained by a device. For example, a device may be coupled toa server to facilitate the transfer of means for performing the methodsdescribed herein. Alternatively, various methods described herein can beprovided via a storage means (e.g., random access memory (RAM), readonly memory (ROM), a physical storage medium such as a compact disc (CD)or floppy disk, etc.), such that a device may obtain the various methodsupon coupling or providing the storage means to the device. Moreover,any other suitable technique for providing the methods and techniquesdescribed herein to a device can be utilized.

It is to be understood that the claims are not limited to the preciseconfiguration and components illustrated above. Various modifications,changes and variations may be made in the arrangement, operation anddetails of the systems, methods, and apparatus described herein withoutdeparting from the scope of the claims.

1. A method for using a joint decoding engine in a wireless device,comprising: determining a first symbol stream and a second symbol streamin a received multiple input multiple output (MIMO) signal, a scaledchannel estimate for a wireless transmission channel, and a scaled noisecovariance of the MIMO signal; whitening the scaled channel estimate andthe first symbol stream; performing max log maximum a posteriori (MLM)processing on the whitened first symbol stream to produce a first datastream; and de-rate matching and turbo decoding the first data stream toproduce a decoded first data stream.
 2. The method of claim 1, furthercomprising: performing hard successive interference cancellation (SIC)or soft SIC on the second symbol stream if SIC is enabled; andwhitening, performing max log maximum a posteriori (MLM) processing,de-rate matching, and turbo decoding the second symbol stream to producea decoded second data stream.
 3. The method of claim 2, whereinsuccessive interference cancellation (SIC) comprises encoding thedecoded first data stream to reproduce the first data stream and usingthe first data stream to zero out one column of the scaled channelestimate.
 4. The method of claim 1, further comprising: determiningscaling factors for a channel estimate and a noise covariance in thereceived multiple input multiple output (MIMO) signal based on amplitudeand energy of the first symbol stream and the second symbol stream; andscaling the channel estimate and the noise covariance using the scalingfactors to produce the scaled channel estimate and the scaled noisecovariance.
 5. The method of claim 1, wherein the determining the firstsymbol stream and the second symbol stream from the received multipleinput multiple output (MIMO) signal comprises despreading ordescrambling the received MIMO signal to produce the first symbol streamand the second symbol stream.
 6. The method of claim 1, wherein thewhitening comprises: determining a whitening matrix based on the scalednoise covariance of the multiple input multiple output (MIMO) signal;and whitening the scaled channel estimate and the first symbol streamusing the whitening matrix.
 7. The method of claim 2, wherein max logmaximum a posteriori (MLM) processing comprises: if bit b_(k) is in s₁,where s₁ is a symbol in the first symbol stream: determining possible s₁values as constellation points such that b_(k)=1; for each possible s₁value, obtaining a minimum mean square error (MMSE) estimate of acorresponding s₂, where s₂ is a symbol in the second symbol stream anddetermining possible s₂ values as the MMSE estimates of s₂ sliced to anearest constellation point; estimating d₁=∥y−h₁s₁−h₂s₂∥ using an L2norm max sum approximation for each (s₁, s₂) pair, where y is thereceived multiple input multiple output (MIMO) signal, h₁ is a firstcolumn in the scaled channel estimate, and h₂ is a second column in thescaled channel estimate; determining a minimum d₁ value, min(d₁);determining possible s₁ values as constellation points such thatb_(k)=0; for each possible s₁ value, obtaining a minimum mean squareerror (MMSE) estimate of a corresponding s₂ and determining possible s₂values as the MMSE estimates of s₂ sliced to a nearest constellationpoint; estimating d₀=∥y−h₁s₁−h₂s₂∥ using an L2 norm max sumapproximation for each (s₁, s₂) pair; determining a minimum d₀ value,min(d₀); and determining the log likelihood ratio (LLR) of b_(k),L(b_(k)), as L(b_(k))=(min(d₁))²−(min(d₀))².
 8. The method of claim 7,wherein max log maximum a posteriori (MLM) processing further comprises:if bit b_(k) is in s₂: determining possible s₂ values as constellationpoints such that b_(k)=1; for each possible s₂ value, obtaining aminimum mean square error (MMSE) estimate of a corresponding s₁, anddetermining possible s₁ values as the MMSE estimates of s₁ sliced to anearest constellation point; estimating d₁=∥y−h₁s₁−h₂s₂∥ using an L2norm max sum approximation for each (s₁, s₂) pair; determining a minimumd₁ value, min(d₁); determining possible s₂ values as constellationpoints such that b_(k)=0; for each possible s₂ value, obtaining aminimum mean square error (MMSE) estimate of a corresponding s₁ anddetermining possible s₁ values as the MMSE estimates of s₁ sliced to anearest constellation point; estimating d₀=∥y−h₁s₁−h₂s₂∥ using an L2norm max sum approximation for each (s₁, s₂) pair; determining a minimumd₀ value, min(d₀); and determining the log likelihood ratio (LLR) ofb_(k), L(b_(k)), as L(b_(k))=(min(d₁))²−(min(d₀))².
 9. The method ofclaim 8, wherein the estimating d₁ and d₀ using the L2 norm max sumapproximation comprises:${{{defining}\mspace{14mu} z} = {\begin{bmatrix}z_{1} \\z_{2} \\z_{3} \\z_{4\;}\end{bmatrix} = \begin{bmatrix}{{real}\left( s_{1} \right)} \\{{imag}\left( s_{1} \right)} \\{{real}\left( s_{2} \right)} \\{{imag}\left( s_{2} \right)}\end{bmatrix}}};{and}$ determining d as$d = {{\max\limits_{i}{z_{i}}} + {0.25\left( {\sum\limits_{j \neq i}{z_{j}}} \right)}}$where i and j are incrementing indices.
 10. The method of claim 1,wherein the wireless device operates using High Speed Downlink PacketAccess (HSDPA).
 11. A wireless device that uses a joint decoding engine,comprising: a processor; memory in electronic communication with theprocessor; instructions stored in the memory, the instructions beingexecutable by the processor to: determine a first symbol stream and asecond symbol stream in a received multiple input multiple output (MIMO)signal, a scaled channel estimate for a wireless transmission channel,and a scaled noise covariance of the MIMO signal; whiten the scaledchannel estimate and the first symbol stream; perform max log maximum aposteriori (MLM) processing on the whitened first symbol stream toproduce a first data stream; and de-rate match and turbo decode thefirst data stream to produce a decoded first data stream.
 12. Thewireless device of claim 11, further comprising instructions executableto: perform hard successive interference cancellation (SIC) or soft SICon the second symbol stream if SIC is enabled; and whiten, perform maxlog maximum a posteriori (MLM) processing, de-rate match, and turbodecode the second symbol stream to produce a decoded second data stream.13. The wireless device of claim 12, wherein the instructions executableto perform successive interference cancellation (SIC) compriseinstructions executable to encode the decoded first data stream toreproduce the first data stream and use the first data stream to zeroout one column of the scaled channel estimate.
 14. The wireless deviceof claim 11, further comprising instructions executable to: determinescaling factors for a channel estimate and a noise covariance in thereceived multiple input multiple output (MIMO) signal based on amplitudeand energy of the first symbol stream and the second symbol stream; andscale the channel estimate and the noise covariance using the scalingfactors to produce the scaled channel estimate and the scaled noisecovariance.
 15. The wireless device of claim 11, wherein theinstructions executable to determine the first symbol stream and thesecond symbol stream from the received multiple input multiple output(MIMO) signal comprise instructions executable to despread or descramblethe received MIMO signal to produce the first symbol stream and thesecond symbol stream.
 16. The wireless device of claim 11, wherein theinstructions executable to whiten comprise instructions executable to:determine a whitening matrix based on the scaled noise covariance of themultiple input multiple output (MIMO) signal; and whiten the scaledchannel estimate and the first symbol stream using the whitening matrix.17. The wireless device of claim 12, wherein instructions executable toperform max log maximum a posteriori (MLM) processing compriseinstructions executable to: if bit b_(k) is in s₁, where s₁ is a symbolin the first symbol stream: determine possible s₁ values asconstellation points such that b_(k)=1; for each possible s₁ value,obtain a minimum mean square error (MMSE) estimate of a correspondings₂, where s₂ is a symbol in the second symbol stream and determinepossible s₂ values as the MMSE estimates of s₂ sliced to a nearestconstellation point; estimate d₁=∥y−h₁s₁−h₂s₂∥ using an L2 norm max sumapproximation for each (s₁, s₂) pair, where y is the received multipleinput multiple output (MIMO) signal, h₁ is a first column in the scaledchannel estimate, and h₂ is a second column in the scaled channelestimate; determine a minimum d₁ value, min(d₁); determine possible s₁values as constellation points such that b_(k)=0; for each possible s₁value, obtain a minimum mean square error (MMSE) estimate of acorresponding s₂ and determine possible s₂ values as the MMSE estimatesof s₂ sliced to a nearest constellation point; estimate d₀=∥y−h₁s₁−h₂s₂∥using the L2 norm max sum approximation for each (s₁, s₂) pair;determine a minimum d₀ value, min(d₀); and determine the log likelihoodratio (LLR) of b_(k), L(b_(k)), as L(b_(k))=(min(d₁))²−(min(d₀))². 18.The wireless device of claim 17, wherein instructions executable toperform max log maximum a posteriori (MLM) processing further compriseinstructions executable to: if bit b_(k) is in s₂: determine possible s₂values as constellation points such that b_(k)=1; for each possible s₂value, obtain a minimum mean square error (MMSE) estimate of acorresponding s₁, and determine possible s₁ values as the MMSE estimatesof s₁ sliced to a nearest constellation point; estimate d₁=∥y−h₁s₁−h₂s₂∥using the L2 norm max sum approximation for each (s₁, s₂) pair;determine a minimum d₁ value, min(d₁); determine possible s₁ values asconstellation points such that b_(k)=0; for each possible s₁ value,obtain a minimum mean square error (MMSE) estimate of a corresponding s₂and determine possible s₂ values as the MMSE estimates of s₂ sliced to anearest constellation point; estimate d₀=∥y−h₁s₁−h₂s₂∥ using the L2 normmax sum approximation for each (s₁, s₂) pair; determine a minimum d₀value, min(d₀); and determine the log likelihood ratio (LLR) of b_(k),L(b_(k)), as L(b_(k))=(min(d₁))²−(min(d₀))².
 19. The wireless device ofclaim 18, wherein instructions executable to estimate d₁ and d₀ usingthe L2 norm max sum approximation comprise instructions executable to:${{{define}\mspace{14mu} z} = {\begin{bmatrix}z_{1} \\z_{2} \\z_{3} \\z_{4}\end{bmatrix} = \begin{bmatrix}{{real}\left( s_{1} \right)} \\{{imag}\left( s_{1} \right)} \\{{real}\left( s_{2} \right)} \\{{imag}\left( s_{2} \right)}\end{bmatrix}}};{and}$ determine d as$d = {{\max\limits_{i}{z_{i}}} + {0.25\left( {\sum\limits_{j \neq i}{z_{j}}} \right)}}$where i and j are incrementing indices.
 20. The wireless device of claim11, wherein the wireless device operates using High Speed DownlinkPacket Access (HSDPA).
 21. A wireless device that uses a joint decodingengine, comprising: means for determining a first symbol stream and asecond symbol stream in a received multiple input multiple output (MIMO)signal, a scaled channel estimate for a wireless transmission channel,and a scaled noise covariance of the MIMO signal; means for whiteningthe scaled channel estimate and the first symbol stream; means forperforming max log maximum a posteriori (MLM) processing on the whitenedfirst symbol stream to produce a first data stream; and means forde-rate matching and turbo decoding the first data stream to produce adecoded first data stream.
 22. The wireless device of claim 21, furthercomprising: means for performing hard successive interferencecancellation (SIC) or soft SIC on the second symbol stream if SIC isenabled; and means for whitening, performing max log maximum aposteriori (MLM) processing, de-rate matching, and turbo decoding thesecond symbol stream to produce a decoded second data stream.
 23. Thewireless device of claim 22, wherein the means for performing successiveinterference cancellation (SIC) comprise means for encoding the decodedfirst data stream to reproduce the first data stream and using the firstdata stream to zero out one column of the scaled channel estimate. 24.The wireless device of claim 21, further comprising: means fordetermining scaling factors for a channel estimate and a noisecovariance in the received multiple input multiple output (MIMO) signalbased on amplitude and energy of the first symbol stream and the secondsymbol stream; and means for scaling the channel estimate and the noisecovariance using the scaling factors to produce the scaled channelestimate and the scaled noise covariance.
 25. The wireless device ofclaim 21, wherein the means for determining the first symbol stream andthe second symbol stream from the received multiple input multipleoutput (MIMO) signal comprise means for despreading or descrambling thereceived MIMO signal to produce the first symbol stream and the secondsymbol stream.
 26. A computer-program product for using a joint decodingengine, the computer-program product comprising a computer-readablemedium having instructions thereon, the instructions comprising: codefor determining a first symbol stream and a second symbol stream in areceived multiple input multiple output (MIMO) signal, a scaled channelestimate for a wireless transmission channel, and a scaled noisecovariance of the MIMO signal; code for whitening the scaled channelestimate and the first symbol stream; code for performing max logmaximum a posteriori (MLM) processing on the whitened first symbolstream to produce a first data stream; and code for de-rate matching andturbo decoding the first data stream to produce a decoded first datastream.
 27. The computer-program product of claim 26, furthercomprising: code for performing hard successive interferencecancellation (SIC) or soft SIC on the second symbol stream if SIC isenabled; and code for whitening, performing max log maximum a posteriori(MLM) processing, de-rate matching, and turbo decoding the second symbolstream to produce a decoded second data stream.
 28. The computer-programproduct of claim 27, wherein the code for performing successiveinterference cancellation (SIC) comprises code for encoding the decodedfirst data stream to reproduce the first data stream and using the firstdata stream to zero out one column of the scaled channel estimate. 29.The computer-program product of claim 26, further comprising: code fordetermining scaling factors for a channel estimate and a noisecovariance in the received multiple input multiple output (MIMO) signalbased on amplitude and energy of the first symbol stream and the secondsymbol stream; and code for scaling the channel estimate and the noisecovariance using the scaling factors to produce the scaled channelestimate and the scaled noise covariance.
 30. The computer-programproduct of claim 26, wherein the code for determining the first symbolstream and the second symbol stream from the received multiple inputmultiple output (MIMO) signal comprises code for despreading ordescrambling the received MIMO signal to produce the first symbol streamand the second symbol stream.